package com.yxhl.zoume.di.component.base;

import com.yxhl.zoume.ZouMeApplication;
import com.yxhl.zoume.data.http.repository.appraisal.AppraisalRepository;
import com.yxhl.zoume.data.http.repository.busticket.BusTicketRepository;
import com.yxhl.zoume.data.http.repository.car.ExpressCarRepository;
import com.yxhl.zoume.data.http.repository.car.OfficialCarRepository;
import com.yxhl.zoume.data.http.repository.car.SpecialCarRepository;
import com.yxhl.zoume.data.http.repository.coupon.CouponRepository;
import com.yxhl.zoume.data.http.repository.identification.IdentificationRepository;
import com.yxhl.zoume.data.http.repository.mywallet.MyWalletRepository;
import com.yxhl.zoume.data.http.repository.passenger.PassengerRepository;
import com.yxhl.zoume.data.http.repository.pay.PaymentRepository;
import com.yxhl.zoume.data.http.repository.splash.SplashBannerRepository;
import com.yxhl.zoume.data.http.repository.tripsmgnt.TripsRepository;
import com.yxhl.zoume.data.http.repository.updateapp.UpdateAppRepository;
import com.yxhl.zoume.data.http.repository.user.AccountRepository;
import com.yxhl.zoume.data.http.repository.usercenter.UserCenterRepository;
import com.yxhl.zoume.di.module.AppModule;
import com.yxhl.zoume.domain.DomainConstants;
import com.yxhl.zoume.navigator.Navigator;

import javax.inject.Named;
import javax.inject.Singleton;

import dagger.Component;
import rx.Scheduler;

/**
 * Created by Xboy on 16/3/4.
 */

@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {

    ZouMeApplication application();

    // 界面导航器
    Navigator navigator();

    @Named(DomainConstants.UI_THREAD)
    Scheduler uiThread();

    @Named(DomainConstants.EXECUTOR_THREAD)
    Scheduler executorThread();


    // 用户相关
    AccountRepository userRepository();

    //行程
    TripsRepository tripsRepository();

    //乘客管理
    PassengerRepository passengerRepository();

    // 车票相关
    BusTicketRepository busTicketRepository();

    // 订单
    PaymentRepository orderRepository();

    //快车
    SpecialCarRepository specialCarRepository();

    //公务车
    OfficialCarRepository officialCarRepository();

    //用户中心
    UserCenterRepository userCenterRepository();

    //App版本升级
    UpdateAppRepository updateAppRepository();

    //评价相关
    AppraisalRepository appraisalRepository();

    //身份验证
    IdentificationRepository identificationRepository();

    //splash 获取
    SplashBannerRepository splashRepository();

    // 优惠券
    CouponRepository couponRepository();

    //钱包
    MyWalletRepository myWalletRepository();

    ExpressCarRepository expressCarRepository();
}
